home *** CD-ROM | disk | FTP | other *** search
- /*
- * File: test.c
- * Description: Small program to show how easy EasyRexx.library makes
- * the AREXX handling. Show how to handle AREXX messages
- * checking the ID in the commandTable.
- *
- * (C) 1994-1995, Ketil Hunn
- *
- * Set tab to 2 for best readability
- *
- */
-
- #include <stdio.h>
-
- #include <libraries/easyrexx.h>
- struct Library *EasyRexxBase;
-
- #define AREXX_CLEAR 1
- #define AREXX_OPEN 2
- #define AREXX_SAVEAS 3
- #define AREXX_HELP 4
- #define AREXX_TEXT 5
- #define AREXX_ROW 6
- #define AREXX_QUIT 7
- #define AREXX_VERSION 8
- #define AREXX_NAME 9
-
- /* This application supports these AREXX commands */
- struct ARexxCommandTable commandTable[]=
- {
- /* ID CMD ARGUMENT TEMPLATE USERDATA */
-
- AREXX_CLEAR, "CLEAR", "FORCE/S", NULL,
- AREXX_OPEN, "OPEN", "PROJECT/S,TEXT/S,NAME/F", NULL,
- AREXX_SAVEAS, "SAVEAS", "NAME/K", NULL,
- AREXX_HELP, "HELP", "AMIGAGUIDE/S,TOPIC/F", NULL,
- AREXX_TEXT, "TEXT", "TEXT/A/F", NULL,
- AREXX_ROW, "ROW", "ROWNUMBER/A/N", NULL,
- AREXX_QUIT, "QUIT", NULL, NULL,
- AREXX_VERSION, "VERSION", NULL, NULL,
- AREXX_NAME, "NAME", NULL, NULL,
- TABLE_END,
- };
-
-
- BYTE myHandleARexx(struct ARexxContext *c)
- {
- LONG result =RC_OK;
- UBYTE *resultstring=NULL,
- myversion[]="EasyREXX.library demonstration";
- BYTE done =FALSE;
- ULONG resultint=0L;
-
- if(GetARexxMsg(c))
- {
- printf("Received: ");
- switch(c->id)
- {
- case AREXX_CLEAR:
- printf("CLEAR");
- break;
- case AREXX_OPEN:
- printf("OPEN");
- if(ARG(c, 1))
- printf(" TEXT");
- else
- printf(" PROJECT");
- if(ARG(c, 2))
- printf(" '%s'", ARGSTRING(c,2));
- break;
- case AREXX_SAVEAS:
- printf("SAVEAS '%s'", ARGSTRING(c,0));
- break;
- case AREXX_HELP:
- printf("HELP");
- if(ARG(c, 0))
- printf(" AMIGAGUIDE");
- if(ARG(c, 1))
- printf(" '%s'", ARGSTRING(c,1));
- break;
- case AREXX_TEXT:
- printf("TEXT '%s'", ARGSTRING(c,0));
- break;
- case AREXX_ROW:
- printf("ROW %ld", ARGNUMBER(c,0));
- break;
- case AREXX_QUIT:
- printf("QUIT");
- done=TRUE;
- break;
- case AREXX_VERSION:
- printf("VERSION");
- resultint=105L;
- break;
- case AREXX_NAME:
- printf("NAME");
- resultstring=myversion;
- break;
- }
- printf("\n");
-
- ReplyARexxMsg(c,
- ER_Result, result,
- ER_ResultLong, resultint,
- ER_ResultString, resultstring,
- TAG_DONE);
- }
- return done;
- }
-
- void main(int argc, char **argv)
- {
- if(EasyRexxBase=OpenLibrary(EASYREXXNAME, EASYREXXVERSION))
- {
- struct ARexxContext *context;
-
- if(context=AllocARexxContext( ER_Portname, "EASYREXX_TEST",
- ER_CommandTable, commandTable,
- TAG_DONE))
- {
- ULONG signal;
- BYTE done=FALSE;
-
- printf( "Welcome to a small EasyRexx demonstration\n"
- "-----------------------------------------\n"
- "Open another shell and start the small\n"
- "AREXX script: rx test\n"
- "or doubleclick on the test.rexx icon.\n");
- while(!done)
- {
- signal=Wait(ER_SIGNAL(context));
-
- if(signal & ER_SIGNAL(context))
- done=myHandleARexx(context);
- }
- FreeARexxContext(context);
- }
- CloseLibrary(EasyRexxBase);
- }
- }
-